"use strict";
cc._RF.push(module, '12d1c4a/BFNG5Szr0TFMFMI', 'hero');
// script/hero.js

"use strict";

// 保存输入的状态
var Input = {}; // 标记人物状态

var State = {
  stand: 1,
  //人物站在平台的状态
  attack: 2 // 攻击的状态

};
cc.Class({
  "extends": cc.Component,
  properties: {},
  onLoad: function onLoad() {
    // console.log('onLoad',this);
    // 设置最大的移动速度
    this._speed = 200; // 设置当前移动速度

    this.sp = cc.v2(0.0); // 默认站在平台上

    this.heroState = State.stand; // 当前是否在攻击状态 0 未攻击  1 攻击1   

    this.combo = 0; // 默认的动画

    this.anima = 'idle'; // 拿到当前动画状态

    this.herAni = this.node.getComponent(cc.Animation); // 监听动画回调

    this.herAni.on("finished", this.onAnimFinshed, this); // 监听键盘按下事件

    cc.systemEvent.on("keydown", this.onKeydown, this); // 监听键盘松开事件

    cc.systemEvent.on("keyup", this.onKeyup, this);
  },
  onDestroy: function onDestroy() {
    cc.systemEvent.off("keydown", this.onKeydown, this);
    cc.systemEvent.off("keyup", this.onKeyup, this);
    this.herAni.off("finished", this.onAnimFinshed, this);
  },
  // 播放动画
  setAni: function setAni(anima) {
    if (this.anima == anima) return; // 选择播放那段动画

    this.anima = anima;
    this.herAni.play(anima);
  },
  // 监听动画回调
  onAnimFinshed: function onAnimFinshed(e, data) {
    if (data.name == 'attack' || data.name == 'attack2' || data.name == 'attack3') {
      // this.anima = 'attack2'
      this.heroState = State.stand;
      this.combo = (this.combo + 1) % 3; // console.log("攻击结束",this.combo);
    }
  },
  onKeydown: function onKeydown(e) {
    // console.log('按下',e);
    Input[e.keyCode] = 1;
  },
  onKeyup: function onKeyup(e) {
    // console.log('松开',e);
    Input[e.keyCode] = 0;
  },
  update: function update(dt) {
    // 获取当前动画
    var anima = this.anima; // 改变当前的面朝方向

    var scaleX = Math.abs(this.node.scaleX); // 拿到一个当前的向前速度

    this.lv = this.node.getComponent(cc.RigidBody).linearVelocity; // 判断 如果是现在是攻击状态的时候需要更改攻击的状态

    switch (this.heroState) {
      case State.stand:
        {
          if (Input[cc.macro.KEY.j]) {
            this.heroState = State.attack;
          }

          break;
        }
    }

    if (this.heroState == State.attack) {
      if (Input[cc.macro.KEY.j]) {
        if (this.combo == 0) {
          anima = 'attack';
        } else if (this.combo == 1) {
          anima = 'attack2';
        } else if (this.combo == 2) {
          anima = 'attack3';
        }
      }
    } // if(this.heroState == State.attack){


    if (this.heroState != State.stand) {
      this.sp.x = 0; // }
    } else {
      this.combo = 0; // 判断当前按键

      if (Input[cc.macro.KEY.a] || Input[cc.macro.KEY.left]) {
        // console.log("左一");
        // this.sp.y = -5;
        this.sp.x = -1;
        this.node.scaleX = -scaleX;
        anima = 'run';
      } else if (Input[cc.macro.KEY.d] || Input[cc.macro.KEY.right]) {
        // this.sp.y = 5;
        this.sp.x = 1;
        this.node.scaleX = scaleX;
        anima = 'run';
      } else {
        // this.sp.y = 0
        this.sp.x = 0;
        anima = 'idle';
      }
    } // 如果有当前速度的话 那么就可以移动  现在只有左右 所以不用y轴


    if (this.sp.x) {
      // this.lv.y = this.sp.y * this._speed
      this.lv.x = this.sp.x * this._speed;
    } else {
      // this.lv.y = 0
      this.lv.x = 0;
    }

    if (anima) {
      this.setAni(anima);
    }

    this.node.getComponent(cc.RigidBody).linearVelocity = this.lv;
  }
});

cc._RF.pop();